#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<int> vi{-1, 2, -3, 4, -5, 6};
    // 将每个元素替换为它的绝对值
    transform(vi.begin(), vi.end(), vi.begin(),
                [] (int i) { return i < 0 ? -i : i; });
    // 错误：不能推断 lambda 的返回类型
    // transform(vi.begin(), vi.end(), vi.begin(),
    //             [] (int i) { if (i < 0) return -i; else return i; });
    // 必须使用尾置返回类型
    transform(vi.begin(), vi.end(), vi.begin(),
                [] (int i) -> int { if (i < 0) return -i; else return i; });
}
